+2006-07-18 Kristian Rietveld <kris@imendio.com>
+
+ Fix for #335012, reported by Matteo Nastasi.
+
+ * gtk/gtktreeview.c (gtk_tree_view_real_start_editing): if the
+ requested space of the editable is smaller than the cell area,
+ put it up above the middle of the cell area.
+
+ * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_start_editing):
+ configure the inner border to cover the cell area if the
+ entry requisition is smaller than the cell_area.
+
2006-07-18 Kristian Rietveld <kris@imendio.com>
Another fix for #164884.
+2006-07-18 Kristian Rietveld <kris@imendio.com>
+
+ Fix for #335012, reported by Matteo Nastasi.
+
+ * gtk/gtktreeview.c (gtk_tree_view_real_start_editing): if the
+ requested space of the editable is smaller than the cell area,
+ put it up above the middle of the cell area.
+
+ * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_start_editing):
+ configure the inner border to cover the cell area if the
+ entry requisition is smaller than the cell_area.
+
2006-07-18 Kristian Rietveld <kris@imendio.com>
Another fix for #164884.
GdkRectangle *cell_area,
GtkCellRendererState flags)
{
+ GtkBorder border;
+ GtkRequisition requisition;
GtkCellRendererText *celltext;
GtkCellRendererTextPrivate *priv;
gtk_editable_select_region (GTK_EDITABLE (priv->entry), 0, -1);
+ gtk_widget_size_request (priv->entry, &requisition);
+ if (requisition.height < cell_area->height)
+ {
+ g_object_get (priv->entry, "inner-border", &border, NULL);
+ border.top = (cell_area->height - requisition.height) / 2;
+ border.bottom = (cell_area->height - requisition.height) / 2;
+ gtk_entry_set_inner_border (GTK_ENTRY (priv->entry), &border);
+ }
priv->in_entry_menu = FALSE;
if (priv->entry_menu_popdown_timeout)
guint flags)
{
gint pre_val = tree_view->priv->vadjustment->value;
+ GtkRequisition requisition;
tree_view->priv->edited_column = column;
_gtk_tree_view_column_start_editing (column, GTK_CELL_EDITABLE (cell_editable));
cell_area->y += pre_val - tree_view->priv->vadjustment->value;
+ gtk_widget_size_request (GTK_WIDGET (cell_editable), &requisition);
+
GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS);
- gtk_tree_view_put (tree_view,
- GTK_WIDGET (cell_editable),
- cell_area->x, cell_area->y, cell_area->width, cell_area->height);
+
+ if (requisition.height < cell_area->height)
+ {
+ gint diff = cell_area->height - requisition.height;
+ gtk_tree_view_put (tree_view,
+ GTK_WIDGET (cell_editable),
+ cell_area->x, cell_area->y + diff/2,
+ cell_area->width, requisition.height);
+ }
+ else
+ {
+ gtk_tree_view_put (tree_view,
+ GTK_WIDGET (cell_editable),
+ cell_area->x, cell_area->y,
+ cell_area->width, cell_area->height);
+ }
+
gtk_cell_editable_start_editing (GTK_CELL_EDITABLE (cell_editable),
(GdkEvent *)event);
+
gtk_widget_grab_focus (GTK_WIDGET (cell_editable));
g_signal_connect (cell_editable, "remove_widget",
G_CALLBACK (gtk_tree_view_remove_widget), tree_view);